package collection;

import java.util.HashMap;
import java.util.Map;

/**
 * 2024/6/4 Map常见API使用 Cjj 8:34
 */
public class MapTest {
    public static void main(String[] args) {
       /* put 添加元素
        remove 移除元素
        clear 清除所有键值对元素
        containsKey 判断集合是否包含指定的键
        containsValue 判断集合是否包含指定的值
        isEmpty 判断集合是否为空
        int size 集合的长度, 也就是键值对的个数*/

        //1.创建Map集合对象并添加元素(因为Map是接口只能通过多态令其实例化)
         Map<String, String> map = new HashMap<>();//实例化
         //1.put添加元素
        map.put("小明","小红");
        map.put("张三","张霞");
        map.put("李四","李丽");
        System.out.println(map);

        /**put方法细节：进行添加/覆盖**/
        //在添加元素的时候,如果键对象不存在,那么将元素添加到集合中,会返回null
        //在添加元素的时候,如果键对象存在,那么将键值对对象覆盖,会把覆盖的值返回

        String s = map.put("貂蝉", "甄姬");//null
        String s1 = map.put("小明","小红");//小红
        String s2 = map.put("李四", "李丽");//李丽
        String s3 = map.put("李四", "李武");//李丽
        System.out.println(s);//键值对没有重复,返回null
        System.out.println(s1);//键对象存在,会覆盖掉键值对对象,会把覆盖的值返回
        System.out.println(s2);
        System.out.println(s3);//键重复,会覆盖原来的键值对;并将覆盖的值返回

      /**remove删除：根据删除键值对元素,并返回删除键值对的值**/
        System.out.println(map);//{李四=李武, 张三=张霞, 小明=小红, 貂蝉=甄姬}
        String s4 = map.remove("张三");//{张霞}
        System.out.println(map);//{李四=李武, 小明=小红, 貂蝉=甄姬}
        System.out.println(s4);//{张霞}

        /**containKey 判断集合中是否包含指定的键**/
        boolean key = map.containsKey("李四");
        System.out.println(key);//true

        /**containValue 判断集合中是否包含指定的值**/
        boolean value = map.containsValue("李武");
        System.out.println(value);//true

        /**isEmpty 判断集合是否为空**/
        boolean empty = map.isEmpty();
        System.out.println(empty);//false

        /**size 获取集合中 键值对的对数**/
        int size = map.size();
        System.out.println(size);

        /**清空集合**/
        map.clear();
        System.out.println(map);

    }
}
